package token

type SimpleReader struct {
	position int
	tokens   []Token
}

func NewSimpleReader(tokens []Token) TokenReader {
	return &SimpleReader{
		tokens: tokens,
	}
}

func (s *SimpleReader) Read() (out Token) {
	if s.position < len(s.tokens) {
		out = s.tokens[s.position]
		s.position += 1
		return
	}
	return nil
}

func (s *SimpleReader) Peek() Token {
	if s.position < len(s.tokens) {
		return s.tokens[s.position]
	}
	return nil
}

func (s *SimpleReader) UnRead() {
	if s.position > 0 {
		s.position -= 1
	}
}

func (s *SimpleReader) Position() int {
	return s.position
}

func (s *SimpleReader) SetPosition(position int) {
	s.position = position
}
